package com.example.project2.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
//如果前端和后端不在同一个域名或端口下，浏览器会阻止跨域请求，从而导致前端无法访问后端服务。
//CORS（跨越资源共享）是一种安全机制，用于允许不同域名的前端和后端进行交互。
// 在 Spring Boot 中，CORS 主要用于解决跨域问题，确保前端应用能够正确访问后端服务

//Spring 注解，表示这个类是一个配置类，用于定义 Spring 容器中的 Bean。
@Configuration
//公共类，用于配置 Web 相关的 CORS 设置。
public class WebCorsConfig {

    @Bean
    public CorsFilter corsFilter() {
        //UrlBasedCorsConfigurationSource -一个 Spring 提供的类，用于基于 URL 路径来配置 CORS（跨域资源共享）规则。
        //source -用于存储和管理 CORS 配置。
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();

        // 设置CORS配置
        config.setAllowCredentials(true);
        config.addAllowedOrigin("*");
        config.addAllowedHeader("*");
        config.addAllowedMethod("*");

        // 注册CORS配置
        source.registerCorsConfiguration("/**", config);

        return new CorsFilter(source);
    }
}